Efficient real-time hierarchy using change events

ABSTRACT

Techniques for providing an efficient real-time hierarchy based on change events are disclosed. In some embodiments, a computer-implemented method comprises: storing a hierarchy table comprising hierarchy data that represents a snapshot state of a hierarchy tree of entities at a first point in time and having been last updated at the first point in time; receiving one or more user requests to change entity data representing entities of the hierarchy tree; storing one or more change events in a queue based on the user request(s); receiving a query request for the hierarchy tree; in response to the receiving of the query request, generating a query result based on the hierarchy table stored in the database and the change event(s) stored in the queue; and performing a function of an enterprise application platform using the query result.

TECHNICAL FIELD

The present application relates generally to the technical field ofelectrical computer systems, and, in various embodiments, to systems andmethods of providing an efficient real-time hierarchy based on changeevents.

BACKGROUND

Current solutions for managing a hierarchy of entities in a computersystem suffer from technical problems. In programming, a hierarchy treemay be used to represent a hierarchy and may be persisted in arelational database. One way to persist a hierarchy tree in a relationaldatabase is by saving a pre-order (NLR) traversal result of thehierarchy tree. The saved traversal result of the hierarchy tree can beused to service query requests for data of the hierarchy tree, whichimproves the speed and efficiency of generating responses to the queryrequests, since the traversal that would be used to search the hierarchytree has already been performed prior to servicing of the queryrequests. However, when a change is made to the hierarchy tree, such asthe addition of a new entity to the hierarchy tree, the computer systemmust traverse the hierarchy tree again and save the result. It is notefficient to traverse the hierarchy tree for each change that is made.For example, a hierarchy tree for an organization may include tens ofthousands of employees. If changes to the organization are frequent, thefunctional impact on the computer system is significant, as thecomputational expense and the time involved in implementing the changesare high. In some solutions, the hierarchy tree is periodicallytraversed and saved to a database. However, since the updates in thesesolutions are periodic with gaps between them, the changes to thehierarchy tree are not reflected in real-time. Users that depend on thechanges being implemented in the hierarchy tree must wait until thehierarchy tree is completed refreshed. As a result, the underlyingcomputer system fails to reliably reflect changes made to a hierarchytree in real-time. In addition to the issues discussed above, othertechnical problems may arise as well.

BRIEF DESCRIPTION OF THE DRAWINGS

Some example embodiments of the present disclosure are illustrated byway of example and not limitation in the figures of the accompanyingdrawings, in which like reference numbers indicate similar elements.

FIG. 1 is a network diagram illustrating a system, in accordance withsome example embodiments.

FIG. 2 is a block diagram illustrating enterprise applications andservices in an enterprise application platform, in accordance with someexample embodiments.

FIG. 3 is a block diagram illustrating a hierarchy system, in accordancewith some example embodiments.

FIG. 4 illustrates a hierarchy tree, in accordance with some exampleembodiments.

FIG. 5 illustrates a visualization of generating a query result based ona first hierarchy table stored in a database and one or more changeevents stored in a queue, in accordance with some example embodiments.

FIG. 6 is a block diagram illustrating the hierarchy system with theroles of the hierarchy tables being switched, in accordance with someexample embodiments.

FIG. 7A illustrates another hierarchy tree, in accordance with someexample embodiments.

FIG. 7B illustrates the hierarchy tree of FIG. 7A after application of amove-in change event, in accordance with some example embodiments.

FIG. 7C illustrates the hierarchy tree of FIG. 7A after application ofanother move-in change event, in accordance with some exampleembodiments.

FIG. 8 is a flowchart illustrating a method of providing an efficientreal-time hierarchy based on change events, in accordance with someexample embodiments.

FIG. 9 is a flowchart illustrating another method of providing anefficient real-time hierarchy based on change events, in accordance withsome example embodiments.

FIG. 10 is a block diagram of an example computer system on whichmethodologies described herein can be executed, in accordance with someexample embodiments.

DETAILED DESCRIPTION

Example methods and systems for providing an efficient real-timehierarchy based on change events are disclosed. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide a thorough understanding of exampleembodiments. It will be evident, however, to one skilled in the art thatthe present embodiments can be practiced without these specific details.

The implementation of the features disclosed herein involves anon-generic, unconventional, and non-routine operation or combination ofoperations. By applying one or more of the solutions disclosed herein,some technical effects of the system and method of the presentdisclosure are to provide a computer system that is specially-configuredto provide an efficient real-time hierarchy based on change events. Insome example embodiments, a computer system is configured to generate aquery result in response to a query request for a hierarchy tree basedon a combination of a first hierarchy table representing a snapshotstate of the hierarchy tree at a first point in time and one or morechange events corresponding to one or more requested changes thatoccurred after the first point in time. The computer system may also beconfigured to use the one or more change events to update a secondhierarchy table that is temporarily not being used for generating anyquery results for end users while the first hierarchy table is beingused to generate query results for end users, and then switch the rolesof the hierarchy tables, such that the second hierarchy table is used togenerate query results and the first hierarchy table is updated based onadditional change events.

By using a combination of a hierarchy table representing a snapshotstate of a hierarchy tree at a first point in time and the change eventscorresponding to requested changes that occurred after the first pointin time to generate a query result, the computer system can efficientlyperform functions using a real-time representation of the hierarchy treewithout incurring the computational expense associated with constantlyupdating the hierarchy table every time a requested change occurs. As aresult, the functionality of the computer system is improved. Othertechnical effects will be apparent from this disclosure as well.

The methods or embodiments disclosed herein may be implemented as acomputer system having one or more modules (e.g., hardware modules orsoftware modules). Such modules may be executed by one or more hardwareprocessors of the computer system. In some example embodiments, anon-transitory machine-readable storage device can store a set ofinstructions that, when executed by at least one processor, causes theat least one processor to perform the operations and method stepsdiscussed within the present disclosure.

The details of one or more variations of the subject matter describedherein are set forth in the accompanying drawings and the descriptionbelow. Other features and benefits of the subject matter describedherein will be apparent from the description and drawings, and from theclaims.

FIG. 1 is a network diagram illustrating a system 100, in accordancewith some example embodiments. A platform (e.g., machines and software),in the example form of an enterprise application platform 112, providesserver-side functionality, via a network 114 (e.g., the Internet) to oneor more clients. FIG. 1 illustrates, for example, a client machine 116with programmatic client 118 (e.g., a browser), a small device clientmachine 122 with a small device web client 120 (e.g., a browser withouta script engine), and a client/server machine 117 with a programmaticclient 119.

Turning specifically to the enterprise application platform 112, webservers 124 and Application Program Interface (API) servers 125 can becoupled to, and provide web and programmatic interfaces to, applicationservers 126. The application servers 126 can be, in turn, coupled to oneor more database servers 128 that facilitate access to one or moredatabases 130. The web servers 124, API servers 125, application servers126, and database servers 128 can host cross-functional services 132.The cross-functional services 132 can include relational databasemodules to provide support services for access to the database(s) 130,which includes a user interface library 136. The application servers 126can further host domain applications 134. The web servers 124 and theAPI servers 125 may be combined.

The cross-functional services 132 provide services to users andprocesses that utilize the enterprise application platform 112. Forinstance, the cross-functional services 132 can provide portal services(e.g., web services), database services, and connectivity to the domainapplications 134 for users that operate the client machine 116, theclient/server machine 117, and the small device client machine 122. Inaddition, the cross-functional services 132 can provide an environmentfor delivering enhancements to existing applications and for integratingthird-party and legacy applications with existing cross-functionalservices 132 and domain applications 134. In some example embodiments,the system 100 comprises a client-server system that employs aclient-server architecture, as shown in FIG. 1. However, the embodimentsof the present disclosure are, of course, not limited to a client-serverarchitecture, and could equally well find application in a distributed,or peer-to-peer, architecture system.

FIG. 2 is a block diagram illustrating enterprise applications andservices in an enterprise application platform 112, in accordance withan example embodiment. The enterprise application platform 112 caninclude cross-functional services 132 and domain applications 134. Thecross-functional services 132 can include portal modules 140, databasemodules 142 (e.g., relational database modules), connector and messagingmodules 144, API modules 146, and development modules 148.

The portal modules 140 can enable a single point of access to othercross-functional services 132 and domain applications 134 for the clientmachine 116, the small device client machine 122, and the client/servermachine 117. The portal modules 140 can be utilized to process, authorand maintain web pages that present content (e.g., user interfaceelements and navigational controls) to the user. In addition, the portalmodules 140 can enable user roles, a construct that associates a rolewith a specialized environment that is utilized by a user to executetasks, utilize services, and exchange information with other userswithin a defined scope. For example, the role can determine the contentthat is available to the user and the activities that the user canperform. The portal modules 140 include a generation module, acommunication module, a receiving module and a regenerating module. Inaddition, the portal modules 140 can comply with web services standardsand/or utilize a variety of Internet technologies including JAVA®, J2EE,SAP's Advanced Business Application Programming Language (ABAP®) and WebDynpro, XML, JCA, JAAS, X.509, LDAP, WSDL, WSRR, SOAP, UDDI andMICROSOFT®.NET®.

The database modules 142 can provide support services for access to thedatabase(s) 130, which includes a user interface library 136. Thedatabase modules 142 can provide support for object relational mapping,database independence, and distributed computing. The database modules142 can be utilized to add, delete, update, and manage databaseelements. In addition, the database modules 142 can comply with databasestandards and/or utilize a variety of database technologies includingSQL, SQLDBC, Oracle, MySQL, Unicode, JDBC, or the like.

The connector and messaging modules 144 can enable communication acrossdifferent types of messaging systems that are utilized by thecross-functional services 132 and the domain applications 134 byproviding a common messaging application processing interface. Theconnector and messaging modules 144 can enable asynchronouscommunication on the enterprise application platform 112.

The API modules 146 can enable the development of service-basedapplications by exposing an interface to existing and new applicationsas services. Repositories can be included in the platform as a centralplace to find available services when building applications.

The development modules 148 can provide a development environment forthe addition, integration, updating, and extension of softwarecomponents on the enterprise application platform 112 without impactingexisting cross-functional services 132 and domain applications 134.

Turning to the domain applications 134, a customer relationshipmanagement application 150 can enable access to and can facilitatecollecting and storing of relevant personalized information frommultiple data sources and business processes. Enterprise personnel thatare tasked with developing a buyer into a long-term customer can utilizethe customer relationship management applications 150 to provideassistance to the buyer throughout a customer engagement cycle.

Enterprise personnel can utilize financial applications 152 and businessprocesses to track and control financial transactions within theenterprise application platform 112. The financial applications 152 canfacilitate the execution of operational, analytical, and collaborativetasks that are associated with financial management. Specifically, thefinancial applications 152 can enable the performance of tasks relatedto financial accountability, planning, forecasting, and managing thecost of finance.

Human resource applications 154 can be utilized by enterprise personneland business processes to manage, deploy, and track enterprisepersonnel. Specifically, the human resource applications 154 can enablethe analysis of human resource issues and facilitate human resourcedecisions based on real-time information.

Product life cycle management applications 156 can enable the managementof a product throughout the life cycle of the product. For example, theproduct life cycle management applications 156 can enable collaborativeengineering, custom product development, project management, assetmanagement, and quality management among business partners.

Supply chain management applications 158 can enable monitoring ofperformances that are observed in supply chains. The supply chainmanagement applications 158 can facilitate adherence to production plansand on-time delivery of products and services.

Third-party applications 160, as well as legacy applications 162, can beintegrated with domain applications 134 and utilize cross-functionalservices 132 on the enterprise application platform 112.

FIG. 3 is a block diagram illustrating a hierarchy system 300, inaccordance with some example embodiments. In some embodiments, thehierarchy system 300 comprises a hierarchy manager 310 and one or moredatabases 320. The hierarchy manager 310 and the database(s) 320 canreside on a computer system, or other machine, having a memory and atleast one processor (not shown). In some embodiments, the hierarchymanager 310 and the database(s) 320 are incorporated into the enterpriseapplication platform 112 in FIGS. 1 and 2. However, it is contemplatedthat other configurations of the hierarchy manager 310 and thedatabase(s) 320 are also within the scope of the present disclosure.

In some example embodiments, the hierarchy manager 310 is configured toprovide a variety of user interface functionality, such as generatinguser interfaces, interactively presenting user interfaces to the user,receiving information from the user (e.g., interactions with userinterfaces), and so on. Presenting information to the user can includecausing presentation of information to the user (e.g., communicatinginformation to a device with instructions to present the information tothe user). Information may be presented using a variety of meansincluding visually displaying information and using other device outputs(e.g., audio, tactile, and so forth). Similarly, information may bereceived via a variety of means including alphanumeric input or otherdevice input. In some example embodiments, the hierarchy manager 310 isconfigured to receive user input. For example, the hierarchy manager 310can present one or more graphical user interface (GUI) elements (e.g.,drop-down menu, selectable buttons, text field) with which a user cansubmit input. In some example embodiments, the hierarchy manager 310 isconfigured to perform various communication functions to facilitate thefunctionality described herein, such as by communicating with acomputing device (e.g., the small device client machine 122, the clientmachine 116, or the client/server machine 117) via the network 114 usinga wired or wireless connection.

In some example embodiments, the hierarchy system 300 is configured toprovide query responses for data stored in a hierarchy tree of entities.FIG. 4 illustrates a hierarchy tree 400, in accordance with some exampleembodiments. In the example shown in FIG. 4, the hierarchy tree 400comprises entities that represent members of an organization, where theentities are represented by nodes of the hierarchy tree 400. The rootnode of the hierarchy tree 400 is labeled “DIRECTOR A” and represents adirector within the organization. The root node has two children nodeslabeled respectively “MANAGER B1” and “MANAGER B2” that representmanagers within the organization. The “MANAGER B1” node has two childrennodes labeled respectively “EMPLOYEE C1,” and “EMPLOYEE C2” thatrepresent employees that are one level below the “MANAGER B1” node. The“MANAGER B2” node has two children nodes labeled respectively “EMPLOYEEC3” and “EMPLOYEE C4” that represent employees that are one level belowthe “MANAGER B2” node. Although the entities of the hierarchy tree 400comprise members of an organization, other types of entities are alsowithin the scope of the present disclosure, including, but not limitedto, products or other tangible assets of a company.

Referring back to FIG. 3, in some example embodiments, the hierarchymanager 310 is configured to receive a query request for informationfrom the hierarchy tree 400, and then generate a query result inresponse to the query request. For example, a user of the enterpriseapplication platform 112 within which the hierarchy system 300 may beimplemented may submit a query request for a list of all members of theorganization that work under DIRECTOR A, such as a query requestsubmitted via selection of one or more user interface elements on acomputing device of the user, and the hierarchy manager 310 may generateand provide a query result comprising the requested list of members tothe user. Other types of query requests are also within the scope of thepresent disclosure.

In some example embodiments, the hierarchy system 300 stores a firsthierarchy table 322 in the database(s) 320. The first hierarchy table322 may comprise first hierarchy data that represents a snapshot stateof a hierarchy tree of entities, such as the hierarchy tree 400, at afirst point in time, where the first hierarchy table 322 was lastupdated at the first point in time. In some example embodiments, thefirst hierarchy table 322 comprises a result of a pre-order (NLR)traversal of the hierarchy tree 400 at the first point in time.Alternatively, the first hierarchy table 322 may comprise another typeof traversal result of the hierarchy tree 400, including, but notlimited to, an in-order (LNR) traversal result, a reverse in-order (RNL)traversal result, or a post-order (LRN) traversal result. Furthermore,the hierarchy tree of entities may comprise any type of hierarchy tree,including, but not limited to, a binary tree whose nodes have at mosttwo children or a multiway tree whose nodes may have more than twochildren.

Additionally, in generating a traversal result for a multiway tree, thehierarchy system 300 may employ a similar procedure as for a binarytree. For example, the hierarchy system 300 may use an NLR traversal fora multiway tree in a similar way as for a binary tree: accessing thedata part of the current node, then traversing the left subtree byrecursively calling the pre-order function, and then traversing theneighboring right subtree by recursively calling the pre-order function,thereby traversing its way through the tree from the left-most subtreeto the right-most subtree.

The following table (Table 1) shows an NLR traversal order of thehierarchy tree 400 shown in FIG. 4:

ORDER NODE NODE ID 1 Director A DA1 2 Manager Bl MB1 3 Employee Cl EC1 4Employee C2 EC2 5 Manager B2 MB2 6 Employee C3 EC3 7 Employee C4 EC4

As a result of the NLR traversal, the hierarchy system 300 may save arepresentation of the hierarchy tree 400 with the first hierarchy table322. The following table (Table 2) is one example of the first hierarchytable 322 based on the example NLR traversal order of the hierarch tree400 shown above:

Node Left Right ID Number Number Level Type DA1 1 14 0 Available MB1 2 71 Available EC1 3 4 2 Available EC2 5 6 2 Available MB2 8 13 1 AvailableEC3 9 10 2 Available EC4 11 12 2 Available

In the example first hierarchy table 322 above, the “Node ID” is anidentification for the corresponding entity node, the “Left Number” isthe number of traversal steps before entering the corresponding subtreeof the corresponding entity node, the “Right Number” is the number oftraversal steps before leaving the corresponding subtree of thecorresponding entity node, the “Level” is the number of edges betweenthe corresponding entity node and the root entity node (e.g., the rootentity node is DA1 in the example above). For each entity node in thehierarchy tree 400, its descendants have their left and right numbersbetween the entity node's numbers, independently of their depth level.The first hierarchy table 322 may also have a corresponding “Type” foreach node, which indicates whether the corresponding entity is no longerpart of the hierarchy tree 400 but still has descendants in thehierarchy tree 400. In one example in which the hierarchy tree 400comprises members of a company, the type value for each node may beeither “Available” or “Vacant,” where “Available” means that the membercorresponding to the node is currently within the organization, and“Vacant” means that the member corresponding to the node has left theorganization, but that one or more other members of the organizationthat were reporting to the member that left (e.g., descendants of themember) are still within the organization in the same position. Otherconfigurations of the first hierarchy table 322 are also within thescope of the present disclosure, including additional columns thatinclude additional details of the corresponding entity nodes.

In some example embodiments, the hierarchy system 300 stores entity datain a data storage structure, such as an entity table 328 stored in thedatabase(s) 320. The entity data comprises data for each entity, such asdata for each member of an organization. Examples of entity datainclude, but are not limited to, a name or other identification (e.g.,an identification number) of a member of an organization, a role, jobtitle or position within the organization, employment contactinformation (e.g., office address, phone number, email address, etc.),personal contact information (e.g., a home address), an identificationof another member to whom the member reports, an identification of oneor more other members who report to the member, and other information ofthe member (e.g., any other employment data of the member, such asperformance data and date employment began at organization).

In some example embodiments, the overall system receives user requeststo change organizational data (e.g., which nodes are added or removed,and which nodes are children nodes of which parent nodes) stored in thehierarchy tree structure. Examples, as will be described later, includeadding entities, removing entities, or reassigning entities within thehierarchy tree structure. When such changes are made, the entirehierarchy tree structure can experience significant realignmentrequiring a subsequent query to read data from the newly realignedhierarchical tree structure to traverse a substantial, if not theentire, newly realigned hierarchical tree structure. This can be timeconsuming for such read requests.

The hierarchy system 300 provides faster responses to read requests byreceiving such user requests to read and output organization data storedin either the first hierarchy table 322 or second hierarchy table 324,any updates as stored in change events 326, and entity data stored inthe entity table 328. In some example embodiments, the hierarchy manager310 may comprise an entity updater 312 that is configured to receive theuser requests and modify the entity table 328 according to the userrequests. For example, the user requests may comprise updating a workaddress for an employee. Other user requests may change the organizationdata of the hierarchy tree 400 that would then render the firsthierarchy table 322 outdated in situations in which change requests arereceived after the point in time at which the first hierarchy table 322was last updated. Therefore, in order to address this technical problemof not accurately reflecting changes to the organization data stored aspart of a hierarchy in real-time, the hierarchy system 300 may combinethe most recent snapshot state of the hierarchy tree 400 represented bythe first hierarchy table 322 with the recently received changes made tothe entity table 328 in order to generate an up to date response to auser request.

In some example embodiments, the hierarchy system 300 uses the firsthierarchy table 322 as a baseline, and then applies the requestedchanges according to the scope of the query request and change eventsrelated to the query request in order to generate a real-timerepresentation of the hierarchy tree 400 on the fly. As a result ofcombining the last snapshot state of the hierarchy tree 400 and therecent relevant change events, the hierarchy system 300 ensures that theresponse to the query request is up to date and correct. In order todecrease the number of change events to process, the hierarchy system300 may periodically refresh the entire hierarchy to the database(s)320.

In some example embodiments, the hierarchy system 300 uses two tables topersist the NLR traversal result. One table, such as the first hierarchytable 322, is activated as the current table to serve query requests,while the other table, such as a second hierarchy table 324, is loadinga more recent version of the hierarchy tree. In this way, while thefirst hierarchy table 322 serves in the role as the active tableavailable for servicing query requests and providing output data to theend user, the hierarchy system 300 may, in parallel, store theorganization data from the hierarchy tree structure into the secondhierarchy table 324, which serves in the role as the offline table thatis not available for servicing query requests. Subsequently, thehierarchy system 300 switches the roles of the first hierarchy table 322and the second hierarchy table 324, resulting in the second hierarchytable 324 being used to service query requests, while the firsthierarchy table 322 is updated by having the hierarchy tree structuretraversed to provide a more up-to-date hierarchy table to process readrequests.

In some example embodiments, when the hierarchy system 300 switches theroles of the first hierarchy table 322 and the second hierarchy table324, the hierarchy system 300 clones the data from whichever table isbeing switched from the role of offline table to active table to theother table that is being switched from the role of active table tooffline table. For example, if the first hierarchy table 322 is actingas the active table and the second hierarchy table 324 is acting as theoffline table, the hierarchy system 300 may switch the first hierarchytable 322 to act as the offline table and the second hierarchy table 324to act as the active table, and may synchronize the first hierarchytable 322 with the second hierarchy table 324 by cloning the data fromthe second hierarchy table 324 to the first hierarchy table 322. Byperiodically switching the roles of the two hierarchy tables 322 and324, the hierarchy system 300 the number of change events to process ismaintained at a small scale, reducing the associated time expense andmaking the update process more efficient.

Using the example of the hierarchy table above, in some embodiments, ifa user wants to query all of the members of the organization thatdirectly report to Director A, the user would enter some form of ageneric query in which an input data field would be “Director A.” As theuser typically does not have direct access to the either of the first orsecond hierarchical tables 322 and 324, nor the data stored therein, hewill not have direct access to the Left and Right Numbers. Therefore,the hierarchy system 300 will convert the end user's generic data queryinto, as an example, the following Structured Query Language (SQL)statement:

-   -   Select*from USER_HIERARCHY_TABLE where LEFT_NUMBER>1 and        RIGHT_NUMBER<14 and level<=1.        If the user wants to query all members that report, directly and        indirectly, to Manager B2, an end user generic query will be        converted into the following SQL statement:    -   Select*from USER_HIERARCHY_TABLE where LEFT_NUMBER>8 and        RIGHT_NUMBER<13.        If the user wants to query all of the members that directly        report to Manager B2, an end user generic query will be        converted into the following SQL statement:    -   Select*from USER_HIERARCHY_TABLE where LEFT_NUMBER>8 and        RIGHT_NUMBER<13 and level<=2.

Adopting change events to the hierarchy tree 400 may be very timeconsuming. For example, when a new user, such as Employee C5, is addedto the hierarchy tree 400 and is configured as reporting to Manager B1,then the hierarchy tree 400 may be changed. However, even with a changeevent of limited scope, such as adding only a single member, severalother entity node values may be required to be changed as well. Forexample, adding a single entity to the hierarchy tree 400 can changemany Left Numbers and Right Numbers of many other entities in thehierarchy tree 400. In addition, traversing a large hierarchy tree 400of thousands of entities can be time-consuming. Therefore, in order toimprove efficiency, the hierarchy system 300 does not traverse thehierarchy tree to generate the hierarchy table for every change event.Rather, the hierarchy system 300 stores (e.g., caches) the change eventsand generates the query result based on the last snapshot state of thehierarchy tree 400, as represented by the active hierarchy table, andthe stored change events.

Referring back to FIG. 3, the hierarchy manager 310 may comprise anevent queue 313 that is configured to cache change events 326 thatrepresent the changes to the organizational data represented in thehierarchy tree 400 according to the incoming change requests. In someexample embodiments, the event queue 313 caches the change events 326 inmemory and loads them from and persist them to the database(s) 320. Thehierarchy manager 310 may also comprise a hierarchy loader 311 thatloads the hierarchy information from the first hierarchy table 322 inresponse to the received query request, as well as a hierarchycalibrator 314 that is configured to revise the loaded hierarchyinformation from the first hierarchy table 322 according to the changeevents 326 in the event queue 313 in order to provide the correctresponse to an end user query.

In some example embodiments, the hierarchy loader 311 uses one or moreSQL Select statements to load the hierarchy information from the firsthierarchy table 322 in response to the received query request. These SQLSelect statements may include the left and right numbers previouslydiscussed. In some example embodiments, the hierarchy system 300automatically generates SQL Select statements based on input from theend user. For example, the end user may submit a request (e.g., via UIelements) for a report of all members that report, directly andindirectly, to Manager B2. In response to this request from the enduser, the hierarchy system 300 may automatically generate the SQL Selectstatement by accessing the active hierarchy table, determining the leftand right numbers for Manager B2 (MB2) from the accessed activehierarchy table, and then determining that all members that report toManager B2 must have a left number greater than 8 and a right numberless than 13, thereby resulting in the automatic generation of thefollowing SQL Select statement: Select*from USER_HIERARCHY_TABLE whereLEFT_NUMBER>8 and NLR_ORDER_NO<13.

In some example embodiments, the hierarchy manager 310 comprises a tableswitcher 316 that is configured to manage the respective roles of thefirst hierarchy table 322 and the second hierarchy table 324,instructing the hierarchy loader 311 as to which hierarchy table, thefirst hierarchy table 322 or the second hierarchy table 324, to use asthe hierarchy table from which to load the latest hierarchy information(e.g., the active hierarchy table to use in servicing the queryrequests), as well as to instruct a hierarchy updater 315 as to whichtable to update (e.g., the offline hierarchy table not used in servicingthe query requests, but is updated by receiving data as the hierarchytree 400 is traversed and read). The hierarchy updater 315 may refreshthe hierarchy table that is not actively being used to service queryrequests (e.g., the second hierarchy table 324 in FIG. 3) to persist thelatest change events as read from traversing the hierarchy tree 400. Amore detailed description of the details of the components of thehierarchy manager 310 with respect to generating the query results inresponse to the query requests using the active hierarchy table (e.g.,the first hierarchy table 322) and the change events 326, as well asupdating the offline hierarchy table (e.g., the second hierarchy table324), will be discussed in further detail below.

FIG. 5 illustrates a visualization of how a query result is generatedwhen the hierarchy tree 500 has been updated to include a new entitybeing generated based on a first hierarchy table 322 (see Table 2) thatrepresents a snapshot state of the hierarchy tree 510 stored in thedatabase(s) 320 prior to the addition of the new node and one or morechange events 326 stored in the event queue 313 that represents theaddition of the new node, in accordance with some example embodiments.The snapshot state of the hierarchy tree 510 in FIG. 5 is the same asthe hierarchy tree 400 shown in FIG. 4 and yields a first hierarchytable 322 as shown in Table 2. In the example shown in FIG. 5, thesnapshot state of the hierarchy tree 510 does not include the changeevent 326 that occurred subsequent to the point in time at which thefirst hierarchy table 322 was last updated. The event change 326 shownin FIG. 5 comprises adding a new member “EMPLOYEE C5” to the hierarchytree. As seen in FIG. 5, even though there is only a single change event326 that has occurred since the last update of the first hierarchy table322, there are six entity nodes that are affected by the single changeevent 326. The corresponding changes to the node entities that would beimplemented in response to the single change event 326 are highlightedin bold in the hierarchy tree 500 in FIG. 5, including the addition of alink from the MANAGER B1 entity node to the new EMPLOYEE C5 entity node,as well as a modification of the left and right numbers of thesubsequent entity nodes according to the NLR traversal. By using thesnapshot state of the hierarchy tree 510 represented in the firsthierarchy table 322 as shown in Table 2, along with the change events326 in the event queue 313, a proper and updated response to a userquery representative of the organization data shown in hierarchy tree500, the hierarchy system 300 is able to provide an accurate real-timerepresentation of the hierarchy tree without being burdened by theexcessive computational and time expense associated with updating theactive first hierarchy table 322 every time a change event 326 occurs.

In some example embodiments, the following operational flow is used bythe hierarchy system 300 to obtain the requested hierarchy information.Initially, the hierarchy system 300 saves a representation of thehierarchy tree 400 in the first hierarchy table 322, such as an NLRtraversal result in the first hierarchy table 322, as previouslydiscussed, and the table switcher 316 points to the first hierarchytable 322, thereby assigning the first hierarchy table 322 as the activehierarchy table to service query requests. In response to a queryrequest, the hierarchy loader 311 loads hierarchy data from the firsthierarchy table 322 based on its assigned role as the active hierarchytable. The hierarchy loader 311 then passes the loaded hierarchy datafrom the first hierarchy table 322 to the hierarchy calibrator 314,which amends the loaded hierarchy data according to the change events326 in the event queue 313 in order to provide accurate real-timehierarchy data as part of a query result generated for the queryrequest.

In some example embodiments, the following operational flow is used bythe hierarchy system 300 to process a user request to change entity datain the entity table 328. The entity updater 312 updates the record inthe entity table 328 (e.g., updating to reflect a new work address),while, at the same time, reading the change data to determine iforganization changes are included (e.g., adding a new employee under anexisting manager). If an organization change is found, entity updater312 forwards that change to event queue 313 so that the change is storedin change events 326. The change event 326 is appended to the eventqueue 313 and is also persisted to the database(s) 320. The tableswitcher 316 notifies the hierarchy updater 315 to start updating theoffline hierarchy table (e.g., the second hierarchy table 324 in FIG. 3)by receiving data as it is read from traversing the hierarchy tree 400.

In some example embodiments, the following operational flow is used bythe hierarchy system 300 to update to the offline hierarchy table (e.g.,the second hierarchy table 324 in FIG. 3). The hierarchy updater 315repeatedly picks a change event 326 from the event queue 313 until thereare no more change events 326 in the event queue 313. If there are nochange events 326 in the event queue 313, then the hierarchy updater 315waits for a notification from the event queue 313 indicating that achange event 326 has been added to the event queue 313. For each changeevent 326, the hierarchy updater 315 updates the offline hierarchy table(e.g., the second hierarchy table 324 in FIG. 3) according to the changeevent 326. The hierarchy system 300 then instructs the event queue 313to remove the change event 326 from the event queue 313.

In another example embodiment, instead of the hierarchy updater 315repeatedly picking a change event 326 from the event queue and updatingthe offline hierarchy table (e.g., the second hierarchy table 324 inFIG. 3) according to each change event 326, the hierarchy updater 315may determine that one or more change events 326 are in the event queue313 and then perform another traversal of the hierarchy tree 400 togenerate an updated traversal result to store in the offline hierarchytable, overwriting the previous traversal result. Rather than generatingthe updated traversal result for each instance of a change event 326being added to the event queue 313, the hierarchy updater 315 may waituntil a minimum threshold number of change events 326 are in the eventqueue 313 before generating the updated traversal result to store in theoffline hierarchy table, thereby addressing the change events 326 inbatches to maximize efficiency and minimize computational expense.

In some example embodiments, the hierarchy system 300 updates theoffline hierarchy table by performing another traversal of the hierarchytree when instructed by table switcher 316. The hierarchy system 300 mayupdate the offline hierarchy table (e.g., the second hierarchy table 324in FIG. 3, the first hierarchy table 322 in FIG. 6) to reflect thetraversal result of this subsequent traversal, which may result inchanges to values in the offline hierarchy table 322 or 324, such as ashifting of left and right numbers of certain node entities (e.g., themodification of the left and right numbers of the subsequent entitynodes previously discussed with respect to the example of FIG. 5). Sincethe associated changes of the subsequent traversal are applied to theoffline hierarchy table during the update rather than being applied tothe active hierarchy table, the hierarchy system 300 mitigates thetechnical problems associated with applying a significant amount ofchanges, since the hierarchy system 300 does not need to interruptservice in order to perform the update, as it is using the firsthierarchy table 322 to service requests while the second hierarchy table324 acting as the offline hierarchy table is being updated. Thehierarchy system 300 applies the heavy lifting of performing the updateto the offline hierarchy table rather than to the active hierarchy tablethat is servicing query requests.

After the offline hierarchy table has been updated and the change event326 has been removed from the event queue 313 due to the updated offlinehierarchy table including all of the latest updates, the table switcher316 switches the roles of the first hierarchy table 322 and the secondhierarchy table 324. For example, while the first hierarchy table 322 isassigned the role of the active hierarchy table servicing query requestsand the second hierarchy table 324 is assigned the role of the offlinehierarchy table not servicing query requests but is instead beingupdated by writing data from traversing the hierarchy tree in FIG. 3,the table switcher 316 may switch these role assignments, assigning thesecond hierarchy table 324 to be the active hierarchy table thatservices query results and the assigning the first hierarchy table 322to be the offline hierarchy table that does not service query resultsbut is instead being updated by writing data from traversing the tree,as seen in the example embodiment of FIG. 6. In some exampleembodiments, especially where the change event does not change entitydata stored in entity table 328, each change event 326 comprises fourfields: (1) ID, which is the ID of the entity (e.g., user or member ofan organization) to which the requested change is to be applied, (2)Old-parent-ID, which is the ID of the original parent of the entity, (3)New-parent-ID, which is the ID of the new parent of the entity, and (4)Action, which is the action that triggers the change request. The changeevents 326 may include, but are not limited to, adding an entity to thehierarchy tree 400, removing an entity from the hierarchy tree 400, andmoving an entity from one position in the hierarchy tree 400 to anotherposition in the hierarchy tree 400.

One example of a change event 326 in which an entity is being added tothe hierarchy tree 400 may be represented as follows:

ID Old-parent-ID New-parent-ID Action C5 N/A B1 add

One example of a change event 326 in which an entity is being removedfrom the hierarchy tree 400 may be represented as follows:

ID Old-parent-ID New-parent-ID Action C5 MB1 N/A remove

One example of a change event 326 in which an entity is being moved fromone position in the hierarchy tree 400 to another position in thehierarchy tree 400 may be represented as follows:

ID Old-parent-ID New-parent-ID Action C5 MB1 MB2 move

In some example embodiments, after the hierarchy information is fetchedfrom the active hierarchy table (e.g., the first hierarchy table 322 inFIG. 3 or the second hierarchy table 324 in FIG. 6) in generating aquery result in response to a received query request, the hierarchycalibrator 314 revises the fetched hierarchy information according tothe change event(s) 326 in the event queue 313. Examples of how queryresults are generated by revising the fetched hierarchy information fromthe active hierarchy table with the change event(s) 326 from the eventqueue 313 are discussed below. These examples use the hierarchy tree 400from FIG. 4 as the baseline hierarchy representation reflected in thefirst hierarchy table 322, and use a query request that requestsinformation about each member of the organization that reports toDIRECTOR A and that does not exceed a level depth of level 2.

In one example, the change events 326 comprise adding new leaf nodes asfollows:

Event # ID Old-parent-ID New-parent-ID Action 1 C5 N/A B1 Add 2 C11 N/AC1 Add 3 B3 N/A A1 AddHere, for each change event 326 that is identified in the table above bythe a different event number (e.g., Event #1, Event #2, etc.), thehierarchy system 300 determines whether the corresponding New parent-IDis in the fetched hierarchy tree 400 as stored in the active hierarchytable (e.g., the first hierarchy table 322 in FIG. 3, the secondhierarchy table 324 in FIG. 6) and whether the New parent ID is not aleaf node. In other words, if the results in response to the usergenerated query should include children node(s) of a parent node in thechange events 326, then hierarchy calibrator 314 will supplement theinformation read from the active hierarchy table (e.g., the firsthierarchy table 322 in FIG. 3 or the second hierarchy table 324 in FIG.6) with data from change events 326 to provide the user with anup-to-date response. In some example embodiments, the hierarchy system300 is configured to supplement the data fetched from the activehierarchy table by: (i) determining the level to which the response isrequested, (ii) determining if any of the added nodes in the changeevents have parent nodes that are responsive to the query, (iii) if itis determined that any of the added nodes in the change events do haveparent nodes that are responsive to the query, then checking the levelof the query to determine if the added node has the level that isrelevant to the query, (iv) if it is determined that the added node hasthe level that is relevant to the query, then adding the added node tothe fetched results from the active hierarchy table, and (v) returningthe modified results to the end user in response to the query request bythe end user. Using the example Events #1, #2, and #3 in the table abovealong with the query request that requests information about each memberof the organization that reports to DIRECTOR A and that does not exceeda level depth of level 2, the corresponding change events 326 for Events#1 and #3 are incorporated into the generated query result, whereas thecorresponding change event 326 for Event #2 is ignored.

In one example, the change events 326 comprise removing entity nodes asfollows:

Event # ID Old-parent-ID New-parent-ID Action 4 C2 B1 N/A remove 5 B2 A1N/A remove 6 C11 C1 N/A removeHere, for each change event 326 that is identified in the table above,the hierarchy system 300 determines if the corresponding ID is in thefetched hierarchy information as stored in the active hierarchy table(e.g., the first hierarchy table 322 in FIG. 3 or the second hierarchytable 324 in FIG. 6). If it is determined that the corresponding ID isin the fetched information, then the hierarchy system 300 removes thenode of the corresponding ID from the query result that is then returnedto the end user as modified by the change event 326.

In one example, the change events 326 comprise moving entity nodes asfollows:

Event # ID Old-parent-ID New-parent-ID Action 7 B1 A1 A2 move 8 C3 B2 B1move 9 C4 B2 A1 move 10 B11 A2 A1 moveChange events in which an entity node is being moved from one positionto another position in the hierarchy can be divided into three types ofmove events:

-   -   (1) Move-in event: in this type of change event, the        Old-parent-ID is not in the fetched hierarchy results from the        active hierarchy table (e.g., the first hierarchy table 322 in        FIG. 3, the second hierarchy table 324 in FIG. 6), but the        New-parent-ID is in the fetched hierarchy table results. For        example, the Event #10 in the table above is a move-in event.    -   (2) Move-out event: in this type of change event, the        Old-parent-ID is in the fetched hierarchy results from the        active hierarchy table (e.g., the first hierarchy table 322 in        FIG. 3 or the second hierarchy table 324 in FIG. 6), but the        New-parent-ID is not in the fetched hierarchy table results. For        example, the Event #7 in the table above is a move-out event.    -   (3) Move-around event: in this type of change event, both the        Old-parent-ID and the New-parent-ID are in the hierarchy. For        example, the Events #8 and #9 in the table above are move-around        events.

As change events 326 keep coming in via change requests, the changeevents 326 to be processed for a query request become more and more. Inorder to decrease the number of change events 326 to process forgenerating a query result for a query request, the hierarchy updater 315may take a batch of change events 326 in the event queue 313, and thenprocess the change events 326 to update the entire hierarchy in memoryand save in the offline hierarchy table. As previously discussed, thehierarchy table to which to apply and save the change event 326 isspecified by the table switcher 316. The hierarchy updater 315 may askthe table switcher 316 to identify which hierarchy table to save as theupdated hierarchy table. After the hierarchy updater 315 saves the datato the specified hierarchy table, the hierarchy updater 315 may mark thestate of the change event 326 that has been processed as “processed” andask the event queue 313 to remove the processed change event 326 fromthe event queue 313. After the even queue 313 saves the change of statefor the processed change event 326, the hierarchy updater 315 may submita request to the table switcher 316 to switch roles for the hierarchytables, thereby causing the active hierarchy table to become the offlinehierarchy table and the offline hierarchy table to become the activehierarchy table. The hierarchy system 300 may then use thenewly-assigned active hierarchy table in generating query results forquery requests.

In some example embodiments, instead of the hierarchy updater 315 takingchange events 326 from the event queue 313 to update the offlinehierarchy, the hierarchy updater 315 may update the offline hierarchytable by performing another traversal of the hierarchy tree 400 togenerate an updated traversal result to store in the offline hierarchytable, overwriting the previous traversal result.

FIG. 7A illustrates another hierarchy tree 700, in accordance with someexample embodiments. Similar to the hierarchy tree 400 in FIG. 4, thehierarchy tree 700 in FIG. 7A comprises entities that represent membersof an organization, where the entities are represented by nodes of thehierarchy tree 700. The root node of the hierarchy tree 700 is labeled“VP” and represents a vice-president within the organization. The rootnode has two children labeled respectively “DIRECTOR A” and “DIRECTOR B”that each represent a corresponding director within the organization.The “DIRECTOR A” and “DIRECTOR B” nodes each have children nodes thatrepresent managers within the organization (e.g., MANAGER B1, MANAGERB2, MANAGER B3, MANAGER B4), and the manager nodes each have childrennodes that represent employees (e.g., EMPLOYEE C1, EMPLOYEE C2, EMPLOYEEC3, EMPLOYEE C4, etc.) that are one level below the manager nodes. Thedifferent levels of the hierarchy tree 700 are shown using L torepresent the level (e.g., L=0, L=1, L=2, etc.). In FIG. 7A, the level Lstarts at 0 for the root node and then increments by one for each stepdown the hierarchy tree 700.

FIG. 7B illustrates the hierarchy tree 700 of FIG. 7A after applicationof a move-in change event, in accordance with some example embodiments.In FIG. 7B, the move-in change event is as follows:

ID Old-parent-ID New-parent-ID Action B3 A2 A1 move

In one example, this move-in change event is retrieved from the eventqueue 313 for use in generating a query result for a query request toload members that report to DIRECTOR A1 with level L=2 (e.g., membersthat do not exceed level L=2). The original result that is retrieved bythe hierarchy system 300 from the first hierarchy table 322 wouldinclude MANAGER B1 and B2, since they are the only members that satisfythe requirements of reporting to DIRECTOR A1 and being at level L=2.However, the hierarchy system 300 also checks the change event 326 todetermine if there are any entries relevant to the query request andshould be included in the query result. Since the change event is a movechange event, where this particular move is viewed as a move-in eventwith respect to the user's query, the hierarchy system 300 checks theNew-parent-ID's level L in the selected hierarchy and compares it withthe request level Lr. Here, the New-parent-ID is A1 and its level L inthe selected hierarchy is 1 and the request level Ir is 2. Since thelevel L of the New-parent-ID, which is 1, is less than the requestedlevel Lr, which is 2, the hierarchy system 300 includes MANAGER B3 inthe query result. The hierarchy system 300 then compares the new levelof the employees reporting to MANAGER B3 (e.g., what the level of theemployees would be after the change event is implemented) with therequest level. In this example, since the new level of these employees,EMPLOYEE C5 and EMPLOYEE C6, is 3, the hierarchy system 300 determinesthat the new level of these employees is greater than the requestedlevel Lr, which is 2, and therefore excludes EMPLOYEE C5 and EMPLOYEE C6from the query result. In FIG. 7B, the nodes that are included in thequery result, DIRECTOR A1, MANAGER B1, MANAGER B2, and MANAGER B3, arehighlighted in bold.

FIG. 7C illustrates the hierarchy tree 700 of FIG. 7A after applicationof another move-in change event, in accordance with some exampleembodiments. In FIG. 7C, the move-in change event is as follows:

ID Old-parent-ID New-parent-ID Action B3 A2 B2 move

In one example, this move change event is retrieved from the event queue313 for use in generating a query result for a query request to loadmembers that report to DIRECTOR A1 with level L=4 (e.g., members that donot exceed level L=4). The original result that is retrieved by thehierarchy system 300 from the first hierarchy table 322 would includeMANAGER B1 and MANAGER B2, as well as their respective children,EMPLOYEE C1, EMPLOYEE C2, EMPLOYEE C3, and EMPLOYEE C4, since they arethe only members that satisfy the requirements of reporting to DIRECTORA1 and not exceeding level L=4. However, the hierarchy system 300 alsochecks the move change event to determine if it is relevant to the queryrequest and should be included in the query result. Since the changeevent is a move-in change event, the hierarchy system 300 checks theNew-parent-ID's level L in the selected hierarchy and compares it withthe request level Lr. Here, the New-parent-ID is B2 and its level L inthe selected hierarchy is 2 and the request level Lr is 4. Since thelevel L of the New-parent-ID, which is 2, is less than the requestedlevel Lr, which is 4, the hierarchy system 300 includes MANAGER B3 inthe query result. The hierarchy system 300 then compares the new levelof the employees reporting to MANAGER B3 (e.g., what the level of theemployees would be after the change event is implemented) with therequest level. In this example, since the new level of these employees,EMPLOYEE C5 and EMPLOYEE C6, is 4, the hierarchy system 300 determinesthat the new level of these employees is equal to the requested levelLr, which is also 4, and therefore includes EMPLOYEE C5 and EMPLOYEE C6in the query result. In FIG. 7C, the nodes that are included in thequery result, DIRECTOR A1, MANAGER B1, MANAGER B2, MANAGER B3, EMPLOYEEC1, EMPLOYEE C2, EMPLOYEE C3, EMPLOYEE C4, EMPLOYEE C5, AND EMPLOYEE C6,are highlighted in bold.

FIG. 8 is a flowchart illustrating a method 800 of providing anefficient real-time response to query of hierarchy data that includeschange events, in accordance with some example embodiments. The method800 can be performed by processing logic that can comprise hardware(e.g., circuitry, dedicated logic, programmable logic, microcode, etc.),software (e.g., instructions run on a processing device), or acombination thereof. In one example embodiment, one or more of theoperations of the method 800 are performed by the hierarchy system 300of FIGS. 3 and 6 (e.g., any combination of one or more of the componentsof the hierarchy system 300), as described above.

At operation 810, the hierarchy system 300 stores a first hierarchytable 322 in a database 320. In some example embodiments, the firsthierarchy table 322 comprises first hierarchy data that represents asnapshot state of a hierarchy tree 400 of entities at a first point intime, where the first hierarchy table 322 has last been updated at thefirst point in time. The first hierarchy data may comprise a result of apre-order (NLR) traversal of the hierarchy tree 400. In some exampleembodiments, the entities of the hierarchy tree 400 may comprise membersof an organization, such as employees of a company. However, other typesof entities are also within the scope of the present disclosure.

Subsequent to the first point in time, the hierarchy system 300 receivesone or more user requests to change entity data stored in a data storagestructure, at operation 820. In some example embodiments, the datastorage structure comprises the entity table 328 in which the entitydata is stored. However, other types of data storage structures are alsowithin the scope of the present disclosure. The entity data stored inthe data storage structure may represent how entities are organizedwithin the hierarchy tree 400. In some example embodiments, the one ormore user requests to change entity data comprise one or more of arequest to add an entity to the hierarchy tree 400, a request to removean entity from the hierarchy tree 400, and a request to move an entityfrom one position in the hierarchy tree 400 to another position in thehierarchy tree 400. However, other types of requests to change entitydata are also within the scope of the present disclosure.

Then, at operation 830, the hierarchy system 300 stores one or morechange events 326 in a queue, such as the event queue 313, based on thereceiving of the one or more user requests to change entity data. Thechange event(s) 326 represent the one or more requested changes ofentity data. As shown in FIG. 3, the entity updater 312 may add thechange events 326 to the event queue 313 in response to receiving thecorresponding change requests and implementing the corresponding changesin the entity table 328.

At operation 840, the hierarchy system 300 receives a first queryrequest for results of the hierarchy tree as stored in the firsthierarchy table 322 subsequent to the receiving of the one or more userrequests to change entity data. For example, a user of the enterpriseapplication platform 112 may submit a request for information of thehierarchy tree via a user interface of a computing device of the user,such as a request for all members of a company that are within aspecified department or that report to a specific director or manager.

Next, the hierarchy system 300, in response to the receiving of thefirst query request, generates a first query result based on the firsthierarchy table 322 stored in the database 320 and the one or morechange events 326 stored in the queue, at operation 850. For example,the hierarchy loader 311 may load hierarchy data from the firsthierarchy table 322 and the hierarchy calibrator 314 may revise theloaded hierarchy data using the change event(s) 326 from the event queue313.

Then, at operation 860, the hierarchy system 300 performs a function ofan enterprise application platform using the generated first queryresult. In some example embodiments, the function comprises displayingthe generated first query result on a computing device. However, othertypes of functions are also within the scope of the present disclosure.

It is contemplated that any of the other features described within thepresent disclosure can be incorporated into the method 800.

FIG. 9 is a flowchart illustrating another method 900 of providing anefficient real-time hierarchy-based results in response to a user querybased on change events, in accordance with some example embodiments. Themethod 900 can be performed by processing logic that can comprisehardware (e.g., circuitry, dedicated logic, programmable logic,microcode, etc.), software (e.g., instructions run on a processingdevice), or a combination thereof. In one example embodiment, one ormore of the operations of the method 900 are performed by the hierarchysystem 300 of FIGS. 3 and 6 (e.g., any combination of one or more of thecomponents of the hierarchy system 300), as described above. The method900 comprises operations performed in combination with the operations ofthe method 800 shown in FIG. 8. Operations 810-860 shown in FIG. 9 areshort-hand description of corresponding operations 810-860 as previouslydescribed in relation to FIG. 8.

At operation 910, the hierarchy system 300 stores a second hierarchytable 324 in the database(s) 320. The second hierarchy table 324 isdifferent from the first hierarchy table 322 and comprises secondhierarchy data that represents an updated state of the hierarchy tree400 of entities at a second point in time that is subsequent to thefirst point in time of the snapshot state of the first hierarchy table322.

Prior to the receiving of the first query request at operation 840, thehierarchy system 300 may update the stored second hierarchy table 324,at operation 915, based on the one or more user requests to changeentity data that are received at operation 820. The hierarchy system 300may use the change event(s) 326 corresponding to the user request(s),such as the change event(s) 326 stored in the event queue 313, to updatethe stored second hierarchy table 324. At this point in the method 900,the updated second hierarchy table 324 is not being used to generate anyquery results, but is rather acting as the offline hierarchy table,while the first hierarchy table 322 is acting as the active hierarchytable that is used to generate query results for query requests. In someexample embodiments, the hierarchy system 300 may determine that one ormore change events 326 are in the event queue 313 and then performanother traversal of the hierarchy tree 400 to generate an updatedtraversal result to store in the offline hierarchy table (e.g., thesecond hierarchy table 324 in FIG. 3), overwriting the previoustraversal result. Rather than generating the updated traversal resultfor each instance of a change event 326 being added to the event queue313, the hierarchy system 300 may wait until a minimum threshold numberof change events 326 are in the event queue 313 before generating theupdated traversal result to store in the offline hierarchy table,thereby addressing the change events 326 in batches to maximizeefficiency and minimize computational expense.

At operation 920, subsequent to the generating the first query result atoperation 850, the hierarchy system 300 may receive one or moreadditional user requests to change entity data stored in the datastorage structure. The additional user request(s) to change entity datamay be similar to the user request(s) received at operation 820.

Then, the hierarchy system 300 may store one or more additional changeevents 326 in the event queue, at operation 930, based on the receivingof the one or more additional user requests to change entity data,similar to the storing of the change event(s) 326 performed at operation830. The additional change event(s) may represent the additionalrequested changes of entity data.

Next, at operation, 940, subsequent to the generating of the first queryresult at operation 850, the hierarchy system 300 receives a secondquery request for the hierarchy tree. At this point in the method 900,the table switcher 316 may have switched the roles of the firsthierarchy table 322 and the second hierarchy table 324, assigning thesecond hierarchy table 324 to be the active hierarchy table that is usedin servicing query requests and assigning the first hierarchy table 324to be the offline hierarchy table that is not used in servicing queryrequests. Prior to the receiving of the second query request atoperation 940, the hierarchy system 300 may have updates the storedfirst hierarchy table 322 based on the additional user request(s) tochange entity data, where the updated first hierarchy table 322 at thispoint is not being used to generate any query results.

In response to the receiving of the second query request, the hierarchysystem 300 may generate a second query result based on the updatedsecond hierarchy table 324 without using the first hierarchy table 322,at operation 950. In some example embodiments, the generating of thesecond query result is further based the additional change event(s) 326stored in the event queue 313 at operation 930.

Then, at operation 960, the hierarchy system 300 performs a function ofthe enterprise application platform 112 using the second query resultthat was generated at operation 950. The function performed at operation960 may be the same type of function performed at operation 860, such asdisplaying the generated second query result on a computing device.However, the function performed at operation 950 may be another type offunction different from the type of function performed at operation 860.

It is contemplated that any of the other features described within thepresent disclosure can be incorporated into the method 900.

The following paragraphs provide example embodiments.

Example 1 includes a computer-implemented method performed by a systemhaving a memory and at least one hardware processor, thecomputer-implemented method comprising: storing a first hierarchy tablein a database, the first hierarchy table comprising first hierarchy datathat represents a snapshot state of a hierarchy tree of entities at afirst point in time, the first hierarchy table having been last updatedat the first point in time; subsequent to the first point in time,receiving one or more user requests to change entity data stored in adata storage structure, the entity data stored in the data storagestructure representing entities of the hierarchy tree; storing one ormore change events in a queue based on the receiving of the one or moreuser requests to change entity data, the one or more change eventsrepresenting the one or more requested changes of entity data; receivinga first query request for the hierarchy tree subsequent to the receivingof the one or more user requests to change entity data; in response tothe receiving of the first query request, generating a first queryresult based on the first hierarchy table stored in the database and theone or more change events stored in the queue; and performing a functionof an enterprise application platform using the generated first queryresult.

Example 2 includes the computer-implemented method of example 1, whereinthe first hierarchy data comprises a result of a pre-order (NLR)traversal of the hierarchy tree.

Example 3 includes the computer-implemented method of example 1 orexample 2, wherein the one or more user requests to change entity datacomprise one or more of a request to add an entity to the hierarchytree, a request to remove an entity from the hierarchy tree, and arequest to move an entity from one position in the hierarchy tree toanother position in the hierarchy tree.

Example 4 includes the computer-implemented method of any one ofexamples 1 to 3, further comprising: storing a second hierarchy table inthe database, the second hierarchy table being different from the firsthierarchy table and comprising second hierarchy data that represents anupdated state of the hierarchy tree of entities at a second point intime subsequent to the first point in time; prior to the receiving ofthe first query request, updating the stored second hierarchy tablebased on the one or more user requests to change entity data, theupdated second hierarchy table not being used to generate the firstquery result; subsequent to the generating of the first query result,receiving a second query request for the hierarchy tree; in response tothe receiving of the second query request, generating a second queryresult based on the updated second hierarchy table without using thefirst hierarchy table; and performing the function of the enterpriseapplication platform using the generated second query result.

Example 5 includes the computer-implemented method of any one ofexamples 1 to 4, further comprising: subsequent to the generating thefirst query result and prior to the receiving of the second queryrequest, receiving one or more additional user requests to change entitydata stored in the data storage structure; and storing one or moreadditional change events in the queue based on the receiving of the oneor more additional user requests to change entity data, the one or moreadditional change events representing the one or more additionalrequested changes of entity data, wherein the generating of the secondquery result is further based the one or more additional change eventsstored in the queue.

Example 6 includes the computer-implemented method of any one ofexamples 1 to 5, further comprising: prior to the receiving of thesecond query request, updating the stored first hierarchy table based onthe one or more additional user requests to change entity data, theupdated first hierarchy table not being used to generate the secondquery result.

Example 7 includes the computer-implemented method of any one ofexamples 1 to 6, wherein the entities of the hierarchy tree comprisemembers of an organization.

Example 8 includes the computer-implemented method of any one ofexamples 1 to 7, wherein the data storage structure comprises an entitytable in which the entity data is stored.

Example 9 includes the computer-implemented method of any one ofexamples 1 to 8, wherein the function comprises displaying the generatedfirst query result on a computing device.

Example 10 includes a system comprising: at least one processor; and anon-transitory computer-readable medium storing executable instructionsthat, when executed, cause the at least one processor to perform themethod of any one of examples 1 to 9.

Example 11 includes a non-transitory machine-readable storage medium,tangibly embodying a set of instructions that, when executed by at leastone processor, causes the at least one processor to perform the methodof any one of examples 1 to 9.

Example 12 includes a machine-readable medium carrying a set ofinstructions that, when executed by at least one processor, causes theat least one processor to carry out the method of any one of examples 1to 9.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A hardware module is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain manner. In example embodiments, oneor more computer systems (e.g., a standalone, client, or server computersystem) or one or more hardware modules of a computer system (e.g., aprocessor or a group of processors) may be configured by software (e.g.,an application or application portion) as a hardware module thatoperates to perform certain operations as described herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that is permanently configured(e.g., as a special-purpose processor, such as a field programmable gatearray (FPGA) or an application-specific integrated circuit (ASIC)) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that istemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarilyconfigured (e.g., programmed) to operate in a certain manner and/or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multipleof such hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses that connect the hardware modules). In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment or as a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), these operations being accessible via anetwork (e.g., the network 114 of FIG. 1) and via one or moreappropriate interfaces (e.g., APIs).

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, software, or in combinations of them.Example embodiments may be implemented using a computer program product,e.g., a computer program tangibly embodied in an information carrier,e.g., in a machine-readable medium for execution by, or to control theoperation of, data processing apparatus, e.g., a programmable processor,a computer, or multiple computers.

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., a FPGA or an ASIC).

A computing system can include clients and servers. A client and serverare generally remote from each other and typically interact through acommunication network. The relationship of client and server arises byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other. In embodimentsdeploying a programmable computing system, it will be appreciated thatboth hardware and software architectures merit consideration.Specifically, it will be appreciated that the choice of whether toimplement certain functionality in permanently configured hardware(e.g., an ASIC), in temporarily configured hardware (e.g., a combinationof software and a programmable processor), or a combination ofpermanently and temporarily configured hardware may be a design choice.Below are set out hardware (e.g., machine) and software architecturesthat may be deployed, in various example embodiments.

FIG. 10 is a block diagram of a machine in the example form of acomputer system 1000 within which instructions 1024 for causing themachine to perform any one or more of the methodologies discussed hereinmay be executed. In alternative embodiments, the machine operates as astandalone device or may be connected (e.g., networked) to othermachines. In a networked deployment, the machine may operate in thecapacity of a server or a client machine in a server-client networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine may be a personal computer (PC), atablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), acellular telephone, a web appliance, a network router, switch or bridge,or any machine capable of executing instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The example computer system 1000 includes a processor 1002 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 1004, and a static memory 1006, which communicatewith each other via a bus 1008. The computer system 1000 may furtherinclude a graphics or video display unit 1010 (e.g., a liquid crystaldisplay (LCD) or a cathode ray tube (CRT)). The computer system 1000also includes an alphanumeric input device 1012 (e.g., a keyboard), auser interface (UI) navigation (or cursor control) device 1014 (e.g., amouse), a storage unit (e.g., a disk drive unit) 1016, an audio orsignal generation device 1018 (e.g., a speaker), and a network interfacedevice 1020.

The storage unit 1016 includes a machine-readable medium 1022 on whichis stored one or more sets of data structures and instructions 1024(e.g., software) embodying or utilized by any one or more of themethodologies or functions described herein. The instructions 1024 mayalso reside, completely or at least partially, within the main memory1004 and/or within the processor 1002 during execution thereof by thecomputer system 1000, the main memory 1004 and the processor 1002 alsoconstituting machine-readable media. The instructions 1024 may alsoreside, completely or at least partially, within the static memory 1006.

While the machine-readable medium 1022 is shown in an example embodimentto be a single medium, the term “machine-readable medium” may include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore instructions 1024 or data structures. The term “machine-readablemedium” shall also be taken to include any tangible medium that iscapable of storing, encoding or carrying instructions for execution bythe machine and that cause the machine to perform any one or more of themethodologies of the present embodiments, or that is capable of storing,encoding or carrying data structures utilized by or associated with suchinstructions. The term “machine-readable medium” shall accordingly betaken to include, but not be limited to, solid-state memories, andoptical and magnetic media. Specific examples of machine-readable mediainclude non-volatile memory, including by way of example semiconductormemory devices (e.g., Erasable Programmable Read-Only Memory (EPROM),Electrically Erasable Programmable Read-Only Memory (EEPROM), and flashmemory devices); magnetic disks such as internal hard disks andremovable disks, magneto-optical disks; and compact disc-read-onlymemory (CD-ROM) and digital versatile disc (or digital video disc)read-only memory (DVD-ROM) disks.

The instructions 1024 may further be transmitted or received over acommunications network 1026 using a transmission medium. Theinstructions 1024 may be transmitted using the network interface device1020 and any one of a number of well-known transfer protocols (e.g.,HTTP). Examples of communication networks include a LAN, a WAN, theInternet, mobile telephone networks, POTS networks, and wireless datanetworks (e.g., WiFi and WiMAX networks). The term “transmission medium”shall be taken to include any intangible medium capable of storing,encoding, or carrying instructions for execution by the machine, andincludes digital or analog communications signals or other intangiblemedia to facilitate communication of such software.

Each of the features and teachings disclosed herein can be utilizedseparately or in conjunction with other features and teachings toprovide a system and method for blind spot implementation in neuralnetworks. Representative examples utilizing many of these additionalfeatures and teachings, both separately and in combination, aredescribed in further detail with reference to the attached figures. Thisdetailed description is merely intended to teach a person of skill inthe art further details for practicing certain aspects of the presentteachings and is not intended to limit the scope of the claims.Therefore, combinations of features disclosed above in the detaileddescription may not be necessary to practice the teachings in thebroadest sense, and are instead taught merely to describe particularlyrepresentative examples of the present teachings.

Some portions of the detailed descriptions herein are presented in termsof algorithms and symbolic representations of operations on data bitswithin a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps leading to a desiredresult. The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the below discussion, itis appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or the like, refer to the action andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical(electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

The present disclosure also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may include a general purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but not limited to, any type of disk,including floppy disks, optical disks, CD-ROMs, and magnetic-opticaldisks, read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, or any type of media suitable forstoring electronic instructions, and each coupled to a computer systembus.

The example methods or algorithms presented herein are not inherentlyrelated to any particular computer or other apparatus. Various generalpurpose systems, computer servers, or personal computers may be usedwith programs in accordance with the teachings herein, or it may proveconvenient to construct a more specialized apparatus to perform themethod steps disclosed herein. The structure for a variety of thesesystems will appear from the description herein. It will be appreciatedthat a variety of programming languages may be used to implement theteachings of the disclosure as described herein.

Moreover, the various features of the representative examples and thedependent claims may be combined in ways that are not specifically andexplicitly enumerated in order to provide additional useful embodimentsof the present teachings. It is also expressly noted that all valueranges or indications of groups of entities disclose every possibleintermediate value or intermediate entity for the purpose of originaldisclosure, as well as for the purpose of restricting the claimedsubject matter. It is also expressly noted that the dimensions and theshapes of the components shown in the figures are designed to aid inunderstanding how the present teachings are practiced, but not intendedto limit the dimensions and the shapes shown in the examples.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the present disclosure. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. The accompanying drawings that form a parthereof show, by way of illustration, and not of limitation, specificembodiments in which the subject matter may be practiced. Theembodiments illustrated are described in sufficient detail to enablethose skilled in the art to practice the teachings disclosed herein.Other embodiments may be utilized and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. This Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

The Abstract of the Disclosure is provided to allow the reader toquickly ascertain the nature of the technical disclosure. It issubmitted with the understanding that it will not be used to interpretor limit the scope or meaning of the claims. In addition, in theforegoing Detailed Description, it can be seen that various features aregrouped together in a single embodiment for the purpose of streamliningthe disclosure. This method of disclosure is not to be interpreted asreflecting an intention that the claimed embodiments require morefeatures than are expressly recited in each claim. Rather, as thefollowing claims reflect, inventive subject matter lies in less than allfeatures of a single disclosed embodiment. Thus, the following claimsare hereby incorporated into the Detailed Description, with each claimstanding on its own as a separate embodiment.

What is claimed is:
 1. A computer-implemented method performed by acomputer system having a memory and at least one hardware processor, thecomputer-implemented method comprising: storing a first hierarchy tablein a database, the first hierarchy table comprising first hierarchy datathat represents a snapshot state of a hierarchy tree of entities at afirst point in time, the first hierarchy table having been last updatedat the first point in time; subsequent to the first point in time,receiving one or more user requests to change entity data stored in adata storage structure, the entity data stored in the data storagestructure representing entities of the hierarchy tree; storing one ormore change events in a queue based on the receiving of the one or moreuser requests to change entity data, the one or more change eventsrepresenting the one or more requested changes of entity data; receivinga first query request for the hierarchy tree subsequent to the receivingof the one or more user requests to change entity data; in response tothe receiving of the first query request, generating a first queryresult based on the first hierarchy table stored in the database and theone or more change events stored in the queue; and performing a functionof an enterprise application platform using the generated first queryresult.
 2. The computer-implemented method of claim 1, wherein the firsthierarchy data comprises a result of a pre-order (NLR) traversal of thehierarchy tree.
 3. The computer-implemented method of claim 1, whereinthe one or more user requests to change entity data comprise one or moreof a request to add an entity to the hierarchy tree, a request to removean entity from the hierarchy tree, and a request to move an entity fromone position in the hierarchy tree to another position in the hierarchytree.
 4. The computer-implemented method of claim 1, further comprising:storing a second hierarchy table in the database, the second hierarchytable being different from the first hierarchy table and comprisingsecond hierarchy data that represents an updated state of the hierarchytree of entities at a second point in time subsequent to the first pointin time; prior to the receiving of the first query request, updating thestored second hierarchy table based on the one or more user requests tochange entity data, the updated second hierarchy table not being used togenerate the first query result; subsequent to the generating of thefirst query result, receiving a second query request for the hierarchytree; in response to the receiving of the second query request,generating a second query result based on the updated second hierarchytable without using the first hierarchy table; and performing thefunction of the enterprise application platform using the generatedsecond query result.
 5. The computer-implemented method of claim 4,further comprising: subsequent to the generating the first query resultand prior to the receiving of the second query request, receiving one ormore additional user requests to change entity data stored in the datastorage structure; and storing one or more additional change events inthe queue based on the receiving of the one or more additional userrequests to change entity data, the one or more additional change eventsrepresenting the one or more additional requested changes of entitydata, wherein the generating of the second query result is further basedthe one or more additional change events stored in the queue.
 6. Thecomputer-implemented method of claim 5, further comprising: prior to thereceiving of the second query request, updating the stored firsthierarchy table based on the one or more additional user requests tochange entity data, the updated first hierarchy table not being used togenerate the second query result.
 7. The computer-implemented method ofclaim 1, wherein the entities of the hierarchy tree comprise members ofan organization.
 8. The computer-implemented method of claim 1, whereinthe data storage structure comprises an entity table in which the entitydata is stored.
 9. The computer-implemented method of claim 1, whereinthe function comprises displaying the generated first query result on acomputing device.
 10. A system of comprising: at least one hardwareprocessor; and a non-transitory computer-readable medium of the managedprivate cloud architecture, the non-transitory computer-readable mediumstoring executable instructions that, when executed, cause the at leastone processor to perform operations comprising: storing a firsthierarchy table in a database, the first hierarchy table comprisingfirst hierarchy data that represents a snapshot state of a hierarchytree of entities at a first point in time, the first hierarchy tablehaving been last updated at the first point in time; subsequent to thefirst point in time, receiving one or more user requests to changeentity data stored in a data storage structure, the entity data storedin the data storage structure representing entities of the hierarchytree; storing one or more change events in a queue based on thereceiving of the one or more user requests to change entity data, theone or more change events representing the one or more requested changesof entity data; receiving a first query request for the hierarchy treesubsequent to the receiving of the one or more user requests to changeentity data; in response to the receiving of the first query request,generating a first query result based on the first hierarchy tablestored in the database and the one or more change events stored in thequeue; and performing a function of an enterprise application platformusing the generated first query result.
 11. The system of claim 10,wherein the first hierarchy data comprises a result of a pre-order (NLR)traversal of the hierarchy tree.
 12. The system of claim 10, wherein theone or more user requests to change entity data comprise one or more ofa request to add an entity to the hierarchy tree, a request to remove anentity from the hierarchy tree, and a request to move an entity from oneposition in the hierarchy tree to another position in the hierarchytree.
 13. The system of claim 10, wherein the operations furthercomprise: storing a second hierarchy table in the database, the secondhierarchy table being different from the first hierarchy table andcomprising second hierarchy data that represents an updated state of thehierarchy tree of entities at a second point in time subsequent to thefirst point in time; prior to the receiving of the first query request,updating the stored second hierarchy table based on the one or more userrequests to change entity data, the updated second hierarchy table notbeing used to generate the first query result; subsequent to thegenerating of the first query result, receiving a second query requestfor the hierarchy tree; in response to the receiving of the second queryrequest, generating a second query result based on the updated secondhierarchy table without using the first hierarchy table; and performingthe function of the enterprise application platform using the generatedsecond query result.
 14. The system of claim 13, wherein the operationsfurther comprise: subsequent to the generating the first query resultand prior to the receiving of the second query request, receiving one ormore additional user requests to change entity data stored in the datastorage structure; and storing one or more additional change events inthe queue based on the receiving of the one or more additional userrequests to change entity data, the one or more additional change eventsrepresenting the one or more additional requested changes of entitydata, wherein the generating of the second query result is further basedthe one or more additional change events stored in the queue.
 15. Thesystem of claim 14, wherein the operations further comprise: prior tothe receiving of the second query request, updating the stored firsthierarchy table based on the one or more additional user requests tochange entity data, the updated first hierarchy table not being used togenerate the second query result.
 16. The system of claim 10, whereinthe entities of the hierarchy tree comprise members of an organization.17. The system of claim 10, wherein the data storage structure comprisesan entity table in which the entity data is stored.
 18. The system ofclaim 10, wherein the function comprises displaying the generated firstquery result on a computing device.
 19. A non-transitorymachine-readable storage medium of a managed private cloud architectureserving an organization, the non-transitory machine-readable storagemedium tangibly embodying a set of instructions that, when executed byat least one hardware processor, causes the at least one processor toperform operations comprising: storing a first hierarchy table in adatabase, the first hierarchy table comprising first hierarchy data thatrepresents a snapshot state of a hierarchy tree of entities at a firstpoint in time, the first hierarchy table having been last updated at thefirst point in time; subsequent to the first point in time, receivingone or more user requests to change entity data stored in a data storagestructure, the entity data stored in the data storage structurerepresenting entities of the hierarchy tree; storing one or more changeevents in a queue based on the receiving of the one or more userrequests to change entity data, the one or more change eventsrepresenting the one or more requested changes of entity data; receivinga first query request for the hierarchy tree subsequent to the receivingof the one or more user requests to change entity data; in response tothe receiving of the first query request, generating a first queryresult based on the first hierarchy table stored in the database and theone or more change events stored in the queue; and performing a functionof an enterprise application platform using the generated first queryresult.
 20. The non-transitory machine-readable storage medium of claim19, wherein the first hierarchy data comprises a result of a pre-order(NLR) traversal of the hierarchy tree.